/**
 * 文档预览组件的预览选项接口
 */
export interface PreviewOptions {
  /** word文档尝试以pdf方式显示，默认false */
  pdf?: boolean;
  /** 尝试以图片方式显示，默认false */
  img?: boolean;
  /** 水印文本，显示水印 */
  watermark?: string;
  /** 是否允许保存源文件，默认false */
  saveable?: boolean;
  /** 是否允许打印，默认true */
  printable?: boolean;
  /** 是否允许选择复制内容，默认true */
  copyable?: boolean;
  /** 是否显示工具条，默认true */
  toolbar?: boolean;
  /** 自定义标题 */
  title?: string;
  /** 预览链接有效期，单位分钟，默认永久有效 */
  expire?: number;
  /** 限制页数，如："5"表示只显示前5页，"2,5"表示从第2页开始的5页，对pdf/doc/docx/ppt/pptx有效 */
  limit?: string;
  /** 文件修改时间戳（精确到秒）或修改时间（如：2021-10-01 21:10:01），值改变刷新缓存，实时预览 */
  mtime?: number | string;
  /** 读取http源文件时传入的referer值 */
  referer?: string;
  /** 读取http源文件时传入的header值，格式为JSON字符串 */
  header?: string;
  /** 限制ip预览，多个用","分割，支持*，如：192.168.* */
  ip?: string;
  /** 预览密码，用户需要输入正确的密码，才能预览 */
  password?: string;
  /** 预览服务密码，仅对私有部署有效 */
  vkey?: string;
}

/**
 * 文档预览组件的属性接口
 */
export interface DocumentPreviewProps {
  /** 可选：组件级默认的文档文件URL（也可在open时传入覆盖） */
  file?: string;
  /** 非必传：预览选项配置对象（组件级默认），open时可传入opsOverride覆盖 */
  ops?: PreviewOptions;
}

/**
 * 文档预览组件暴露的方法接口
 */
export interface DocumentPreviewExpose {
  /**
   * 打开预览弹窗
   * @param file 运行时传入的文档文件URL，优先级最高；未提供时回退到props.file
   * @param opsOverride 运行时覆盖的ops，优先级高于props.ops，与默认值合并
   */
  open: (file?: string, opsOverride?: PreviewOptions) => void;
  /** 关闭预览弹窗 */
  close: () => void;
}

/**
 * 默认的预览选项
 */
export const defaultPreviewOptions: PreviewOptions = {
  pdf: false,
  img: false,
  //watermark: "XDOC文档预览",
  saveable: true,
  printable: true,
  copyable: true,
  toolbar: true,
  expire: undefined,
  limit: undefined,
  mtime: undefined,
  referer: undefined,
  header: undefined,
  ip: undefined,
  password: undefined,
  vkey: undefined,
  title: undefined
};
